package Model;

import java.util.LinkedList;

public class Partie {
    private ContratEnum contrat;
    private int tour;                       //compteur de tour
    private LinkedList<Carte> enMain;       //liste des cartes en main
    private LinkedList<Carte> joueeTour;    //liste des cartes jouee ce tour
    private LinkedList<Carte> jouee;        //liste des cartes jouee
    private LinkedList<Integer> ordre;      //liste des joueur ayant gagné chaque tour

    public ContratEnum getContrat() {
        return contrat;
    }

    public void setContrat(ContratEnum contrat) {
        this.contrat = contrat;
    }

    public int getTour() {
        return tour;
    }

    public void setTour(int tour) {
        this.tour = tour;
    }

    public LinkedList<Carte> getEnMain() {
        return enMain;
    }

    public void setEnMain(LinkedList<Carte> enMain) {
        this.enMain = enMain;
    }

    public LinkedList<Carte> getJoueeTour() {
        return joueeTour;
    }

    public void setJoueeTour(LinkedList<Carte> joueeTour) {
        this.joueeTour = joueeTour;
    }

    public LinkedList<Carte> getJouee() {
        return jouee;
    }

    public void setJouee(LinkedList<Carte> jouee) {
        this.jouee = jouee;
    }

    public LinkedList<Integer> getOrdre() {
        return ordre;
    }

    public void setOrdre(LinkedList<Integer> ordre) {
        this.ordre = ordre;
    }

    //retourne la carte qui à gagnée le tour (ou pli)
    public Carte gagneTour(){

        Carte carte;
        int taille=joueeTour.size();

        //s'il y a l'atout 21
        for (int i=0;i<taille;i++){
            if(joueeTour.get(i).getEnseigne()==EnseigneCarteEnum.ATOUT && joueeTour.get(i).getSymbole()==SymboleCarteEnum.VINGT_ET_UN){
                return joueeTour.get(i);
            }
        }

        //sinon on compare les cartes
        carte=comparaison();

        return carte;
    }

    //retourne la carte la plus forte de joueeTour, pour n'importe quel nombre de joueurs
    public Carte comparaison(){
        Carte premierecarte=joueeTour.getFirst();
        Carte cartelaplusforte=premierecarte;
        for (int i=1;i<joueeTour.size();i++){
            //les 2 cartes ne sont pas des atouts
            if (cartelaplusforte.getEnseigne() != EnseigneCarteEnum.ATOUT && joueeTour.get(i).getEnseigne() != EnseigneCarteEnum.ATOUT) {
                //on vérifie que la carte suivante est de la même couleur que la première carte jouée
                if (joueeTour.get(i).getEnseigne()==premierecarte.getEnseigne()){
                    //on compare leur valeur
                    if (cartelaplusforte.getSymbole().numero<joueeTour.get(i).getSymbole().numero){
                        cartelaplusforte=joueeTour.get(i);
                    }
                }
            }
            //la carte la plus forte n'est pas un atout alors que l'autre oui
            else if (cartelaplusforte.getEnseigne() != EnseigneCarteEnum.ATOUT && joueeTour.get(i).getEnseigne() == EnseigneCarteEnum.ATOUT) {
                cartelaplusforte=joueeTour.get(i);
            }
            //les 2 cartes sont des atouts
            else if (cartelaplusforte.getEnseigne() == EnseigneCarteEnum.ATOUT && joueeTour.get(i).getEnseigne() == EnseigneCarteEnum.ATOUT) {
                //on compare leur valeur
                if (cartelaplusforte.getSymbole().numero<joueeTour.get(i).getSymbole().numero){
                    cartelaplusforte=joueeTour.get(i);
                }
            }
            //le cas qu'il reste est si cartelaplusforte est un atout et l'autre non, et donc cartelaplusforte ne change pas

        }
        return cartelaplusforte;
    }

}
